package com.molichuxing.services.infrastructure.service;

import java.util.List;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.infrastructure.dto.request.create.OrderStatusFlowCreateDto;
import com.molichuxing.services.infrastructure.dto.response.OrderDealerDetailStatusDto;
import com.molichuxing.services.infrastructure.dto.response.OrderExclusivelStatusFlowDto;
import com.molichuxing.services.infrastructure.dto.response.OrderSubscribeStatusFlowDto;

/**
 * <p>
 * 订单状态流转 服务类
 * </p>
 *
 * @author renzhengyu
 * @since 2019-08-12
 */
public interface OrderStatusFlowService extends RootService {

	/**
	 * 获取采购单信息详情 - 状态流转
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 * @throws Exception
	 */
	public List<OrderDealerDetailStatusDto> getOrderDealerDetailStausFlowList(Long orderCode) throws Exception;

	/**
	 * 新增订单状态流转信息表
	 * 
	 * @param orderStatusFlowCreateDto
	 *            新增dto
	 * @return
	 */
	public Boolean createOrderStatusFlow(OrderStatusFlowCreateDto orderStatusFlowCreateDto);

	/**
	 * 订阅里程订单流转信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 * @throws Exception
	 */
	public List<OrderSubscribeStatusFlowDto> getSubscribeOrderStatusFlow(Long orderCode) throws Exception;

	/**
	 * 专属里程订单流转信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 * @throws Exception
	 */
	public List<OrderExclusivelStatusFlowDto> getExclusivelOrderStatusFlow(Long orderCode) throws Exception;

	/**
	 * 经销商订单流转信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 * @throws Exception
	 */
	public List<OrderDealerDetailStatusDto> getDealerOrderStatusFlow(Long orderCode) throws Exception;


	/**
	 * 更新状态时间
	 * @param orderCode
	 * @param status
	 * @return
	 */
	public int modifyDealerOrderStatusFlow(Long orderCode ,Integer status);

	/**
	 * 状态回滚
	 * @param orderCode
	 * @param status
	 * @return
	 */
	public int modifyDeleteDealerOrderStatusFlow(Long orderCode ,Integer status);
}
